/*
 * HiloProcesamiento.cpp
 *
 *  Created on: 20/05/2012
 *      Author: Shazgath
 */

#include "Worker.h"
#include "Consulta.h"

Worker::Worker(Cola<Consulta*>& cE, Cola<Respuesta*>& cR, Data::Datos& ref)
: colaDeEntrada(cE), colaDeSalida(cR), datos(ref) {
}

Worker::~Worker() {
}

Respuesta* Worker::procesarConsulta(Consulta* c) {
	Respuesta* res = new Respuesta(c->getId());
	std::string consulta;
	consulta = c->serializarParaServidor();
	std::ostringstream answer;
	datos.Consultar(consulta, answer);
	std::string respuesta = answer.str();
	res->setRespuesta(respuesta);
	return res;
}

void Worker::run() {
	while(isRunning()) {
		Consulta* c = colaDeEntrada.pop();
		Respuesta* r = procesarConsulta(c);
		colaDeSalida.push(r);
	}
}

